🧾 Платёж по счёту
Таблица на схеме

📅 Задачи yougile
- 🔵🟢 Реализовать работу с банковскими выписками ITR-407
- 🔵🟢 Реализовать разделение платежа на два счёта
✏️ Общее описание
🔎 Уточнить
🖊️ Общие особенности
- Желательное поведение — бухгалтер загружает файл выгрузки всех платежей за день (или несколько дней). После этого происходит автоматический парсинг файла, в результате которого в базу данных вносятся данные о платежах, а статус счета обновляется соответствующим образом. Если оплату не получилось в автоматическом режиме привязать к счёту или сумма оплат по счёту вышла больше, чем сумма по счёту, то бухгалтеру нужно вручную разрешить конфликты
- Создание платежей происходит только через парсинг. Редактирование предусматривает только привязку документа к нужному счёту в случае необходимости
- Проверки которые выполняются (может быть несколько ошибок через запятую):
- Счёт на оплату должен быть привязан (обязательная проверка, даже с галочкой Подтверждаю правильность данных). Иначе ошибка "Не найден счёт" или "Не найден контрагент"
- Сумма платежей по счёту не должна превышать сумму в счёте на оплату. Иначе ошибка "Сумма платежей превышает сумму в счёте"
- Счёт на оплату должен быть в статусе отличном от Отменён. Иначе ошибка "Счёт в уже в статусе Отменён"
- Счёт получателя в платеже должен совпадать с нашим счётом в счёте на оплату. Иначе ошибка "Счёт получателя не совпадает"
- Разделение платежа на два счёта будет реализовано позже. В первое время платёж будет привязываться целиком к одному счёту
Логика привязки оплаты к счёту
- парсим каждую секцию документа - получаем поля Номер, Дата, Сумма, Назначение платежа, Платильщик счёт, Получатель счёт
- в строке назначения платежа ищем номер счёта на оплату по шаблону "\b(\d2-\d+)\b"
- проверяем наличие счёта платильщика в БД
- ищем счёт на оплату по номеру, найденному в п.2
- проверяем, что счёт имеет статус отличный от отменён
- проверяем, что Получатель счёт в выгрузке совпадает с номером счёта нашей организации в найденном счёте
- проверяем, что общая сумма оплат не превышает суммы счёта
- если счёт найден - привязываем оплату к нему
- если найдены ошибки - то отображаем их в оплате через запятую
📋 Предзаполненные данные
🔐 Доступ
- Бухгалтер (просмотр и редактирование)
- Начальник менеджеров по продажам (просмотр)
- Менеджер по продажам (просмотр если есть доступ к контрагенту)
- Помощник менеджера по продажам (просмотр если есть доступ к контрагенту)
💻 Веб интерфейс
Работа происходит в форме счёта на оплату https://orders.regina.fvds.ru/xxxxxxxxxxxxxxxxxxxxxxxxx или в форме банковских выгрузок https://orders.regina.fvds.ru/xxxxxxxxxxxxxxxxxxxxxxxxx
Таблица по выгрузке
Платежи в выгрузке
Колонки:
- (id)
- Номер
- Дата
- Сумма
- Ошибка
- Счёт (на оплату)
- Заказ покупателя
- Покупатель
- Комментарий (зауженная колонка до двух слов)
Для бухгалтера
Просмотр
модальное окно
Поля:
- Основная информация:
- Номер
- Дата
- Номер счета плательщика
- Сумма
- Полное описание (по умолчанию свёрнуто)
- Ошибка
- Комментарий
- (id)
- (счёт на оплату id)
- (покупатель id)
- (заказ покупателя id)
- Информация по счёту на оплату
- Номер (ссылка)
- Дата
- Итого
- Всего оплачено
- Статус
- Комментарий
- (id)
- Информация по контрагенту
- Краткое наименование (ссылка)
- ИНН
- КПП
- (id)
- Информация по заказу покупателя
- Номер (ссылка)
- Статус задачи Создать заказ покупателя
- Состояние
- Валюта
- Ответственный
- Всего оплачено
- Сумма заказа
- Комментарий
- (id)
- (задача Создать заказ покупателя id)
Эндпоинты: Получение платежа по id, Получение краткой информации счёта на оплату по id, Получение краткой информации контрагента по id, Получение краткой заказа покапателя по id
Редактирование
Поля:
-
Основная информация:
- Номер (не ред.)
- Дата (не ред.)
- Номер счета плательщика (не ред.)
- ИНН платильщика (не ред.)
- КПП платильщика (не ред.)
- Номер счёта получателя (не ред.)
- Назначение платежа (не ред.)
- Сумма (не ред.)
- Полное описание (не ред., по умолчанию свёрнуто)
- Подтверждаю правильность данных (ред.) (галочка. Если установлена, то повторная проверка на беке не происходит, кроме проверки, что счёт на оплату заполнен. Иначе заново выполняются все проверки)
- Ошибка (не ред.)
- Комментарий (ред.)
-
Автокомплит выбора контрагента (Наименование/ИНН/КПП)
-
Таблица выбора счёта по контрагенту (с двойными заголовками и возможностью фильтрации)
- Информация по счёту на оплату
- Номер (ссылка)
- Дата
- Итого
- Статус (фильтр по умолчанию = "Отправлен" ИЛИ "Частично оплачен")
- Комментарий
- (id)
- Информация по заказу покупателя
- Номер (ссылка)
- Статус задачи (фильтр по умолчанию = "Ожидает оплаты")
- Состояние
- Валюта
- Ответственный
- Сумма заказа
- Комментарий
- (id)
- Информация по счёту на оплату
-
Информация по счёту на оплату
- Номер (ссылка)
- Дата
- Итого
- Всего оплачено
- Статус
- Комментарий
- (id)
Эндпоинты: Получение подробной информации платежа по id, Получение краткой информации по контрагентам, Получение данных для таблицы выбора счёта, Получение краткой информации счёта на оплату по id
🔗 Связанные сущности
👨🏽💻 API
/Order/InvoicePayment/ - Swagger - Order API